1. Field of the Invention
The present invention pertains to the field of computer system buses. More particularly, this invention relates to initialization of agents in a bus system.
2. Background
In modern computer systems, multiple agents are often coupled to a bus and arbitrate for the use of that bus. An arbitration scheme is employed which determines which agent coupled to the bus should have ownership of the bus at any given moment. A computer system may include multiple processors, or similar devices, that are somewhat alike in their bus usage requirements. Such multiple processors are referred to as "symmetric agents".
In some arbitration schemes a central arbiter keeps track of which agent is to be given ownership of the bus. In other, distributed arbitration schemes, each agent on the bus keeps track of which agent is the last or current owner of the bus, thereby allowing each agent to know which agent will be given priority for ownership next.
In arbitration schemes where each agent keeps track of the last or current owner of the bus, it may be necessary to initialize each agent whenever the system is reset such that all agents are in agreement as to who has priority for bus ownership. This agent initialization must be performed accurately, however it is often desirable to reduce the amount of logic required to perform the initialization due to its low frequency of use. That is, initialization often occurs only at system reset; thus, it is undesirable to expend significant overhead in supporting initialization schemes.
One common way of initializing agents for arbitration is to set a jumper on each agent. That is, each agent participating in arbitration for the bus has a set of pins accessible to the system user. By connecting the proper combination of pins with a jumper, the system user is able to assign that agent a particular arbitration identification. In order to change the arbitration identification for that particular agent the user must change the setting of the jumper. Furthermore, in systems requiring each agent to have a unique arbitration identification, the system user must ensure that jumpers for two agents are not set the same, thereby giving them the same arbitration identification. Thus, to alter the arbitration identifications for all agents on the bus requires physical manipulation of every jumper on every agent.
Another method of initializing agents for arbitration involves a signal being sent to multiple agents during multiple dock cycles. During a first clock cycle, information indicating the arbitration identification for the first agent is latched onto the first agent through one (or perhaps more) of the agent's pins. During a second clock cycle, information indicating the arbitration identification for a second agent is latched onto the second agent over the identical pin on the second agent. Thus, a different input line is driven to a common input pin of a different processor on each clock cycle. This sequence is continued for as many clock cycles as are necessary to latch arbitration identification information onto each agent. One drawback to this approach is that it requires multiple clock cycles to initialize all agents on the bus for arbitration.
In modern computer systems, the importance of system speed is ever-increasing. Thus, it would be advantageous to provide a mechanism for initializing arbitration agents which could be accomplished in a minimal amount of time.
Additionally, many modern computer systems can have a varying number of agents on a bus. The number of agents on a particular bus may vary between systems, or may vary over time for a given system. Thus, it would be advantageous to provide a versatile system which supports a variable number of agents with a minimal amount of additional logic and expense, and the performance of which is independent of the number of agents.
In addition, in many modern computer systems the location of agents on a bus may vary. Thus, it would be advantageous to provide an initialization mechanism which is identical for each agent, yet provides each agent with a unique identity within the system.
The present invention provides a solution to the problems of the prior art.